package com.wyx.suanfa;

/**
 * @author 王艺锡
 * @version 1.0
 */
public class reverseWords {

    //给你一个字符串 s ，请你反转字符串中 单词 的顺序。
    //
    //单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
    //
    //返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
    //
    //注意：输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中，单词间应当仅用单个空格分隔，且不包含任何额外的空格。
}
/*

class Solution {
    public String reverseWords(String s) {
        //调用方法，去除两边和中间多余空格
        StringBuilder str = removeSpace(s);
        //调用方法，反转字符串
        reverseStr(str,0,str.length() - 1);
        //调用方法，反转每个单词
        reverseEachWord(str);

        return str.toString();
    }

    //编写方法，去除两边和中间多余空格
    public StringBuilder removeSpace(String s){
        int start = 0;
        int end = s.length() - 1;
        while(s.charAt(start) == ' '){//如果字符串开头有空格
            start++;
        }
        while(s.charAt(end) == ' '){//如果结尾有空格
            end--;
        }

        StringBuilder str =  new StringBuilder();
        //遍历剩下字串，去掉中间多余空格
        while(start <= end){
            char c = s.charAt(start);
            //如果当前字符不是空格，则加到str结尾
            //如果当前字符是空格，但是str结尾不是空格，则加到str结尾
            if(c != ' ' || str.charAt(str.length() - 1) != ' '){
                str.append(c);
            }
            start++;
        }

        return str;
    }

    //编写方法，反转字符串
    public void reverseStr(StringBuilder str,int start,int end){
        while(start < end){
            char temp = str.charAt(start);
            str.setCharAt(start,str.charAt(end));
            str.setCharAt(end,temp);
            start++;
            end--;
        }

    }


    //编写方法，反转每个单词
    public void reverseEachWord(StringBuilder str){
        int start = 0;
        int end = 1;
        int len = str.length();
        while(start < len){
            while(end < len && str.charAt(end) != ' '){
                end++;
            }

            reverseStr(str,start,end - 1);
            start = end + 1;
            end = start + 1;
        }


    }



}
*/


